package cn.bytengine.stem.module;

import cn.bytengine.stem.contexts.Context;

public abstract class AbstractModule implements Module {

    private Context context;
    private Context configContext;
    private final String moduleName;

    protected AbstractModule(String moduleName) {
        this.moduleName = moduleName;
    }

    @Override
    public String getModuleName() {
        return moduleName;
    }

    @Override
    public final void init(Context context, Context configContext) {
        this.context = Context.space(context);
        this.configContext = Context.immutableProxy(configContext);
        init();
    }

    protected void init() {

    }

    @Override
    public Context getContext() {
        return context;
    }

    @Override
    public Context getConfigContext() {
        return configContext;
    }
}
